#include <stdlib.h>
#include "fifo.h"

using namespace nbds;

void check(bool test) {
	if (!test)
		exit(1);
}

int main() {
	fifo<int> l;

	check(l.is_empty());

	l.enqueue(1);
	l.enqueue(2);
	l.enqueue(3);

	check(!l.is_empty());
	check(l.dequeue() == 1);

	l.enqueue(4);

	check(l.dequeue() == 2);
	check(l.dequeue() == 3);
	check(l.dequeue() == 4);

	check(l.is_empty());

	l.enqueue(5);
	check(l.dequeue() == 5);

	check(l.is_empty());

	fifo<int*> k;
	int a, b, c, d, e;

	check(k.is_empty());

	k.enqueue(&a);
	k.enqueue(&b);
	k.enqueue(&c);

	check(!k.is_empty());
	check(k.dequeue() == &a);

	k.enqueue(&d);

	check(k.dequeue() == &b);
	check(k.dequeue() == &c);
	check(k.dequeue() == &d);

	check(k.is_empty());

	k.enqueue(&e);
	check(k.dequeue() == &e);

	check(k.is_empty());
}
